﻿// <com.woyouqiu.Copyright>
// --------------------------------------------------------------
// <copyright>上海有求网络科技有限公司 2015</copyright>
// <Solution>Vecen.BangChuang</Solution>
// <Project>Vecen.BangChuang.Net.Sms</Project>
// <FileName>ISmsSender.cs</FileName>
// <CreateTime>2017-04-29 20:58</CreateTime>
// <Author>何苗</Author>
// <Email>hemiao@woyouqiu.com</Email>
// <log date="2017-04-29 20:58" version="00001">创建</log>
// --------------------------------------------------------------
// </com.woyouqiu.Copyright>

using System.Collections.Generic;
using System.Threading.Tasks;

namespace Vecen.BangChuang.Net.Sms {
    public interface ISmsSender {
        /// <summary>
        /// Send Sms
        /// </summary>
        /// <param name="to">Receiver</param>
        /// <param name="templateCode">template code</param>
        /// <param name="templateParams">template parameters</param>
        void Send(string to, string templateCode, List<string> templateParams);

        /// <summary>
        /// Send Sms
        /// </summary>
        /// <param name="to">Receiver</param>
        /// <param name="templateCode">template code</param>
        /// <param name="templateParams">template parameters</param>
        /// <returns></returns>
        Task SendAsync(string to, string templateCode, List<string> templateParams);

        /// <summary>
        /// Send Sms
        /// </summary>
        /// <param name="to">Receiver</param>
        /// <param name="templateCode">template code</param>
        /// <param name="templateParams">template parameters</param>
        /// <param name="freeSignName">free sign name</param>
        void Send(string to, string templateCode, List<string> templateParams, string freeSignName);

        /// <summary>
        /// Send Sms
        /// </summary>
        /// <param name="to">Receiver</param>
        /// <param name="templateCode">template code</param>
        /// <param name="templateParams">template parameters</param>
        /// <param name="freeSignName">free sign name</param>
        /// <returns></returns>
        Task SendAsync(string to, string templateCode, List<string> templateParams, string freeSignName);

        /// <summary>
        /// Send Sms
        /// </summary>
        /// <param name="sms"></param>
        void Send(SmsMessageDto sms);

        /// <summary>
        /// Send Sms
        /// </summary>
        /// <param name="sms"></param>
        /// <returns></returns>
        Task SendAsync(SmsMessageDto sms);
    }
}